상호배제와 데드락
JeongSeulho
2025년 01월 04일
준비중...
클립보드로 복사
프로세스 동기화
- 서로 다른 프로세스가 공유하는 자원을 접근하는 순서에 따라 결과가 달라짐
- 프로세스가 동시에 사용하면 안되는 영역을 임계영역이라 함
상호배제
- 여러 프로세스가 동시에 임계영역에 들어가지 못하도록 하는 것
- 조건
- 임계영역에는 동시에 하나의 프로세스만 접근
- 여러 요청에도 하나의 프로세스의 접근만 허용
- 임계구역에 들어간 프로세스는 빠르게 나갈 수 있어야 함
세마포어
- 세마포어라는 변수를 열쇠로 사용하여 임계영역에 1개의 프로세스만 들어가도록 함
- 세마포어 과정
- 임계영역 접근이 OS에게 세마포어(열쇠)를 받고 임계영역에 진입
- 임계영역을 빠져나오면 세마포어를 반환
- 임계영역에 프로세스가 있다며 다른 프로세스는 세마포어(열쇠)가 없어 임계영역에 진입하지 못함
- 세마포어 반환을 누락하면 데드락 발생
모니터
- OS가 아닌 프로그래밍 언어 수준에서 상호배제를 제공
데드락
- 데드락이 일어나는 조건
- 상호배제 : 1개의 프로세스만 점유 가능
- 비선점 : 다른 프로세스가 강제로 자원을 뺏을 수 없음
- 점유대기 : 자원을 점유하고 있는 프로세스가 다른 자원을 기다림
- 순환대기 : 프로세스간의 필요한 자원을 기다리는 화살표가 원형을 이룸
- 데드락 발생 시 롤백으로 해결
은행원 알고리즘
- 데드락을 예방하는 알고리즘
- 자원을 요청할 때 해당 자원을 준 이후 데드락이 발생할 확률이 있을지 미리 검사
- 데드락 발생 확률이 존재하면 다른 프로세스에세의 자원 반환을 기다림